﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
//引用ArrayList集合类的命名空间
using System.Collections;

namespace ch05
{
    class Class11
    {
        static void Main(string[] args)
        {
            //采用3W1H的方法来进行学习
            //what？ 要学的这个东西是什么
            //why？  为什么要学这个东西，它有什么好处
            //where？什么地方可以应用它解决问题
            //how？  如何具体去使用它，它的语法

            //1.什么是集合？？
            //答：集合可以看作是动态数组，也就是长度可变的数组
            /*
            int[] nums = new int[3] {1,2,3 };
            //***********将nums数组的长度+1***********
            //先创建一个原来数组长度+1的数组
            int[] temp = new int[nums.Length+1];
            //把nums数组的每个值都复制给temp数组
            temp[0] = nums[0];
            temp[1] = nums[1];
            temp[2] = nums[2];
            //将temp数组赋值给nums数组
            nums = temp;
            //***********将nums数组的长度+1***********
            
            nums[3] = 4;
            foreach (int n in nums)
            {
                Console.WriteLine(n);
            }
            */

            //2.集合与数组的区别？
            //答：数组的长度是固定的 。而集合的长度是可变的。
            //    数组中存储的数据必须是相同的数据类型，而集合则什么数据类型都可以存储。

            //3.我们在什么情况下使用集合呢？？
            //答：

            //3.集合的语法与特点？
            
            //创建一个集合对象
            ArrayList list = new ArrayList();

            //将数据存入集合
            //往集合中存数据的时候不能使用下标的方式
            //list[0] = "aaa";
            //要通过调用集合的Add方法往集合中添加数据
            list.Add("aaa");
            list.Add("bbb");
            list.Add("ccc");
            list.Add(123);
            list.Add(98.5);
            list.Add(true);

            //在集合的指定位置插入值
            list.Insert(2,"张博文");

            //删除集合中的值
            //list.Remove("张博文");
            //根据指定位置删除集合中的值
            list.RemoveAt(2);

            //清空集合中的值
            list.Clear();

            /*
            list.IndexOf("张博文");
            list.Reverse();
            list.Sort();
            list.ToArray();
            */
            //从集合中取出数据的时候可以使用下标

            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }
            
            /*
            foreach (string s in list)
            {
                Console.WriteLine(s);
            }
            */
        }
    }
}
